package study.mq.kafka.consumer.support.kafka;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

/**
 * 在 spring-kafka 在运行时会启动两类线程，一类是 Consumer 线程，另一类是 Listener 线程
 * （1）前者用来直接调用 kafka-client 的 poll() 方法获取消息，后者才是调用我们代码中标有 @KafkaListener 注解方法的线程。
 * （2）如果直接使用 kafka-client 的话，那么正常的写法是一个while循环，在循环里面调用 poll()，然后处理消息，
 * 这在 kafka broker 看来就是一个 Consumer。如果你想用多个 Consumer, 除了多启动几个进程以外，也可以在一个进程使用多个线程执行此while()循环
 * --------------------------------------------------
 * 对于spring.kafka.listener.concurrency=3这个参数来说，它设置的是每个 @KafkaListener 的并发个数
 * 每添加一个@KafkaListener, spring-kafka都会启动concurrency条Consumer线程来监听这些topic(注解可以指定监听多个topic),
 * 当enable-auto-commit设为true时会直接在当前线程，即kafka consumer所在线程调用我们的@KafkaListener方法，
 * 如果设为false，则是将消息投放到阻塞队列中，另一边由Listener线程取出执行
 */
@Slf4j
@Configuration
public class _1_KafkaListenerContainerConfig {

}
